Išsamus galutinio nuoseklumo modelių nagrinėjimas, siekiant sukurti atsparias ir plečiamas paskirstytas sistemas, skirtas pasaulinei auditorijai.
Valdymas duomenų nuoseklumas: tyrinėjant galutinį nuoseklumo modelius
Paskirstytų sistemų pasaulyje absoliutus, realaus laiko duomenų nuoseklumas visuose mazguose gali būti didžiulis iššūkis. Sistemos tampa sudėtingesnės ir plečiasi, ypač pasaulinėms programoms, kurios aptarnauja vartotojus dideliais geografiniais atstumais ir skirtingomis laiko juostomis, stipraus nuoseklumo siekimas dažnai kainuoja prieinamumą ir našumą. Štai kur galutinio nuoseklumo koncepcija tampa galingu ir praktišku paradigmu. Šis tinklaraščio įrašas detaliai apžvelgs, kas yra galutinis nuoseklumas, kodėl jis yra svarbus moderniose paskirstytose architektūrose, ir nagrinės įvairius modelius bei strategijas, kaip jį efektyviai valdyti.
Duomenų nuoseklumo modelių supratimas
Prieš galėdami tikrai įvertinti galutinį nuoseklumą, būtina suprasti platesnį duomenų nuoseklumo modelių kraštovaizdį. Šie modeliai nustato, kaip ir kada duomenų pakeitimai tampa matomi skirtingose paskirstytos sistemos dalyse.
Stiprus nuoseklumas
Stiprus nuoseklumas, dažnai vadinamas linearizuojamumu, garantuoja, kad visi skaitymai grąžins naujausią įrašą. Stipriai nuoseklioje sistemoje bet kokia operacija atrodo vykstanti vienu, visuotiniu laiko momentu. Nors tai suteikia numatomą ir intuityvią vartotojo patirtį, ji paprastai reikalauja didelių koordinavimo išlaidų tarp mazgų, o tai gali lemti:
- Padidėjęs vėlavimas: Operacijos turi laukti patvirtinimų iš kelių mazgų, sulėtindamos atsakymus.
- Sumažėjęs prieinamumas: Jei didelė sistemos dalis tampa neprieinama, įrašai ir skaitymai gali būti blokuojami, net jei kai kurie mazgai vis dar veikia.
- Prieinamumo apribojimai: Reikalinga koordinacija gali tapti kliūtimi, kai sistema plečiasi.
Daugeliui pasaulinių programų, ypač turinčioms didelį transakcijų kiekį arba reikalaujančioms mažo vėlavimo prieigos pasauliniams vartotojams, stipraus nuoseklumo kompromisai gali būti neįmanomi.
Galutinis nuoseklumas
Galutinis nuoseklumas yra silpnesnis nuoseklumo modelis, kuriame, jei nesukuriama jokių naujų pakeitimų tam tikram duomenų elementui, galiausiai visi prieigos prie to elemento grąžins paskutinę atnaujintą vertę. Paprastai tariant, naujinimai laikui bėgant perduodami per sistemą. Gali būti laikotarpis, kai skirtingi mazgai turi skirtingas duomenų versijas, tačiau šis skirtumas yra laikinas. Galiausiai visos kopijos susivienys į tą pačią būseną.
Pagrindiniai galutinio nuoseklumo privalumai yra:
- Didelis prieinamumas: Mazgai gali toliau priimti skaitymus ir įrašus, net jei jie negali nedelsiant bendrauti su kitais mazgais.
- Pagerintas našumas: Operacijos gali būti užbaigtos greičiau, nes jos nebūtinai turi laukti patvirtinimų iš visų kitų mazgų.
- Patobulintas plečiamumas: Sumažėjusios koordinavimo išlaidos leidžia sistemoms lengviau plečtis.
Nors momentinio nuoseklumo trūkumas gali kelti susirūpinimą, tai yra modelis, kuriuo remiasi daugelis labai prieinamų ir plečiamų sistemų, įskaitant dideles socialinės žiniasklaidos platformas, el. prekybos gigantus ir pasaulinius turinio pristatymo tinklus.
CAP teorema ir galutinis nuoseklumas
Galutinio nuoseklumo ir sistemos dizaino santykis yra neatsiejamai susijęs su CAP teorema. Ši fundamentali paskirstytų sistemų teorema teigia, kad paskirstytas duomenų saugyklos gali vienu metu teikti tik dvi iš šių trijų garantijų:
- Nuoseklumas (C): Kiekvienas skaitymas gauna naujausią įrašą arba klaidą. (Tai reiškia stiprų nuoseklumą).
- Prieinamumas (A): Kiekvienas prašymas gauna (ne klaidos) atsakymą, be garantijos, kad jame yra naujausias įrašas.
- Tinklo padalijimo tolerancija (P): Sistema toliau veikia, nepaisant bet kokio tinklo tarp mazgų prarastų (arba vėluojančių) pranešimų skaičiaus.
Praktiškai tinklo padalijimai (P) yra bet kurios paskirstytos sistemos, ypač pasaulinės, realybė. Todėl projektuotojai turi pasirinkti tarp nuoseklumo (C) ar prieinamumo (A) prioritetų, kai įvyksta padalijimas.
- CP sistemos: Šios sistemos prioritetą teikia nuoseklumui ir tinklo padalijimo tolerancijai. Tinklo padalijimo metu jos gali aukoti prieinamumą, tapdamos neprieinamos, kad užtikrintų duomenų nuoseklumą tarp likusių mazgų.
- AP sistemos: Šios sistemos prioritetą teikia prieinamumui ir tinklo padalijimo tolerancijai. Tinklo padalijimo metu jos liks prieinamos, tačiau tai dažnai reiškia momentinio nuoseklumo aukojimą, vedantį prie galutinio nuoseklumo.
Dauguma modernių, pasauliniu mastu paskirstytų sistemų, siekiančių didelio prieinamumo ir plečiamumo, iš esmės linksta į AP sistemas, priimdamos galutinį nuoseklumą kaip pasekmę.
Kada galutinis nuoseklumas yra tinkamas?
Galutinis nuoseklumas nėra panacėja kiekvienai paskirstytų sistemų. Jo tinkamumas labai priklauso nuo programos reikalavimų ir priimtino pasenusių duomenų toleravimo laipsnio. Tai ypač tinka:
- Daug skaitymo turinčios darbo krūviai: Programos, kuriose skaitymai yra daug dažnesni nei įrašai, gauna didelę naudą, nes pasenę skaitymai yra mažiau reikšmingi nei pasenę įrašai. Pavyzdžiai apima produktų katalogų, socialinės žiniasklaidos kanalų ar naujienų straipsnių rodymą.
- Nekritiniai duomenys: Duomenys, kurių nedidelis propagavimo vėlavimas ar laikinas nenuoseklumas nesukelia didelių verslo ar vartotojo poveikių. Pagalvokite apie vartotojų nuostatas, sesijos duomenis ar analitinius rodiklius.
- Pasaulinis paskirstymas: Programos, aptarnaujančios vartotojus visame pasaulyje, dažnai turi teikti pirmenybę prieinamumui ir mažam vėlavimui, todėl galutinis nuoseklumas yra būtinas kompromisas.
- Sistemos, reikalaujančios didelio veikimo laiko: El. prekybos platformos, kurios turi būti pasiekiamos piko prekybos sezonų metu, arba kritinės infrastruktūros paslaugos.
Ir atvirkščiai, sistemos, kurioms reikalingas stiprus nuoseklumas, apima finansines transakcijas (pvz., banko likučiai, akcijų sandoriai), sandėlio valdymą, kur reikia užkirsti kelią pertekliui parduoti, arba sistemas, kuriose griežta operacijų tvarka yra svarbiausia.
Pagrindiniai galutinio nuoseklumo modeliai
Efektyvus galutinio nuoseklumo įgyvendinimas ir valdymas reikalauja specifinių modelių ir metodų priėmimo. Pagrindinis iššūkis yra spręsti konfliktus, kylančius, kai skirtingi mazgai skiriasi, ir užtikrinti galutinį suderinimą.
1. Replikacija ir Gossip protokolai
Replikacija yra fundamentali paskirstytoms sistemoms. Galutinio nuoseklumo sistemose duomenys replikuojami keliuose mazguose. Naujinimai perduodami iš šaltinio mazgo į kitas kopijas. Gossip protokolai (taip pat žinomi kaip epideminiai protokolai) yra įprastas ir patikimas būdas tai pasiekti. Gossip protokole:
- Kiekvienas mazgas periodiškai ir atsitiktinai bendrauja su kitų mazgų pogrupiu.
- Bendravimo metu mazgai keičiasi informacija apie savo dabartinę būseną ir visus turimus naujinimus.
- Šis procesas tęsiasi, kol visi mazgai turės naujausią informaciją.
Pavyzdys: Apache Cassandra naudoja tarpusavio gossip mechanizmą mazgų aptikimui ir duomenų perdavimui. Klasterio mazgai nuolat keičiasi informacija apie savo sveikatą ir duomenis, užtikrindami, kad naujinimai galiausiai pasklistų visoje sistemoje.
2. Vektoriniai laikrodžiai
Vektoriniai laikrodžiai yra mechanizmas priežastiniams ryšiams ir lygiagretiems naujinimams paskirstytoje sistemoje aptikti. Kiekvienas procesas palaiko skaitiklių vektorį, po vieną kiekvienam sistemos procesui. Kai įvyksta įvykis arba procesas atnaujina savo vietinę būseną, jis padidina savo paties skaitiklį vektoriuje. Siunčiant pranešimą, jis apima savo dabartinį vektorinį laikrodį. Gavus pranešimą, procesas atnaujina savo vektorinį laikrodį, imdamas didžiausią iš savo paties skaitiklių ir gautų skaitiklių kiekvienam procesui.
Vektoriniai laikrodžiai padeda nustatyti:
- Priežastiniai įvykiai: Jei vektorinis laikrodis A yra mažesnis arba lygus vektoriniam laikrodžiui B (komponentų atžvilgiu), tada įvykis A įvyko prieš įvykį B.
- Lygiagretūs įvykiai: Jei nei vektorinis laikrodis A yra mažesnis arba lygus B, nei B yra mažesnis arba lygus A, tada įvykiai yra lygiagretūs.
Ši informacija yra labai svarbi konfliktų sprendimui.
Pavyzdys: Daugelis NoSQL duomenų bazių, tokių kaip Amazon DynamoDB (viduje), naudoja vektorinių laikrodžių formą duomenų elementų versijoms stebėti ir lygiagretiems įrašams aptikti, kuriuos gali tekti sujungti.
3. Paskutinio įrašo laimėjimas (LWW)
Paskutinio įrašo laimėjimas (LWW) yra paprasta konfliktų sprendimo strategija. Kai įvyksta keli prieštaringi to paties duomenų elemento įrašai, įrašas su naujausiu laiko žymekliu yra pasirenkamas kaip galutinė versija. Tam reikalingas patikimas būdas nustatyti „naujausią“ laiko žymeklį.
- Laiko žymeklio generavimas: Laiko žymeklius gali generuoti klientas, įrašą gaunantis serveris arba centralizuota laiko paslauga.
- Iššūkiai: Laikrodžių dreifas tarp mazgų gali būti didelė problema. Jei laikrodžiai nesinchronizuoti, vėlesnis įrašas gali pasirodyti ankstesnis. Sprendimai apima sinchronizuotus laikrodžius (pvz., NTP) arba hibridinius loginius laikrodžius, kurie derina fizinį laiką su loginiais inkrementais.
Pavyzdys: Redis, kai sukonfigūruotas replikacijai, dažnai naudoja LWW konfliktų sprendimui perkeliant valdiklį. Kai pagrindinis serveris sugenda, replika gali tapti nauju pagrindiniu serveriu, ir jei įrašai vyko lygiagrečiai abiejuose, laimi tas, kuris turi naujausią laiko žymeklį.
4. Priežastinis nuoseklumas
Nors ne visai „galutinis“, priežastinis nuoseklumas yra stipresnė garantija nei pagrindinis galutinis nuoseklumas ir dažnai naudojamas galutinio nuoseklumo sistemose. Jis užtikrina, kad jei vienas įvykis priežastimi ankstesnis kitą, tada visi mazgai, matantys antrąjį įvykį, taip pat turi matyti pirmąjį įvykį. Įvykiai, kurie nėra priežastimi susiję, skirtingi mazgai gali matyti skirtingomis tvarkomis.
Tai dažnai įgyvendinama naudojant vektorinius laikrodžius ar panašius mechanizmus priežastinės operacijų istorijos stebėjimui.
Pavyzdys: Amazon S3 skaitymo po įrašymo nuoseklumas naujiems objektams ir galutinis nuoseklumas naujinimo PUT ir DELETE operacijoms iliustruoja sistemą, kuri teikia stiprų nuoseklumą kai kurioms operacijoms ir silpnesnį nuoseklumą kitoms, dažnai remiantis priežastiniais ryšiais.
5. Rinkinio suderinimas (CRDTs)
Konfliktų neturinčios replikuotos duomenų tipai (CRDTs) yra duomenų struktūros, sukurtos taip, kad lygiagretūs replikų naujinimai gali būti automatiškai sujungiami be sudėtingos konfliktų sprendimo logikos ar centrinės valdžios. Jie iš esmės sukurti galutiniam nuoseklumui ir aukštam prieinamumui.
CRDTs yra dviejų pagrindinių formų:
- Būsenos pagrindu veikiantys CRDTs (CvRDTs): Replikos keičiasi visa savo būsena. Sujungimo operacija yra asociatyvi, komutatyvi ir neefektyvi.
- Operacijos pagrindu veikiantys CRDTs (OpRDTs): Replikos keičiasi operacijomis. Mechanizmas (pvz., priežastinė transliacija) užtikrina, kad operacijos būtų pristatomos visoms replikoms priežastine tvarka.
Pavyzdys: Riak KV, paskirstyta NoSQL duomenų bazė, palaiko CRDTs skaitikliams, rinkiniams, žemėlapiams ir sąrašams, leidžiantis kūrėjams kurti programas, kuriose duomenys gali būti atnaujinami lygiagrečiai skirtinguose mazguose ir automatiškai sujungiami.
6. Sujungiamo duomenų struktūros
Panašiai kaip CRDTs, kai kurios sistemos naudoja specializuotas duomenų struktūras, kurios yra sukurtos sujungti net po lygiagrečių modifikacijų. Tai dažnai apima versijų ar duomenų skirtumų saugojimą, kurie gali būti protingai sujungti.
- Operacijų transformacija (OT): Dažnai naudojama bendradarbiavimo redagavimo sistemose (pvz., Google Docs), OT užtikrina, kad lygiagrečūs skirtingų vartotojų redagavimai būtų taikomi nuoseklia tvarka, net jei jie gaunami nenusisekus.
- Versijos vektoriai: Paprastesnė vektorinio laikrodžio forma, versijos vektoriai stebi replikos žinomų duomenų versijas ir naudojami aptikti bei spręsti konfliktus.
Pavyzdys: Nors ir ne pats CRDT, tai, kaip Google Docs tvarko lygiagrečius redagavimus ir juos sinchronizuoja tarp vartotojų, yra puikus sujungiamo duomenų struktūrų pavyzdys, užtikrinantis, kad visi matytų nuoseklų, nors ir galutinai atnaujintą dokumentą.
7. Kvorumo skaitymai ir įrašai
Nors dažnai siejami su stipriu nuoseklumu, kvorumo mechanizmai gali būti pritaikyti galutiniam nuoseklumui, derinant skaitymo ir įrašymo kvorumo dydžius. Tokiose sistemose kaip Cassandra, įrašymo operacija gali būti laikoma sėkminga, jei ją patvirtina didžioji dalis (W) mazgų, o skaitymo operacija grąžina duomenis, jei ji gali gauti atsakymus iš didžiosios dalies (R) mazgų. Jei W + R > N (kur N yra bendras kopijų skaičius), gausite stiprų nuoseklumą. Tačiau, jei pasirenkate vertes, kurioms W + R <= N, galite pasiekti didesnį prieinamumą ir derėtis dėl galutinio nuoseklumo.
Galutiniam nuoseklumui, paprastai:
- Įrašai: Gali būti patvirtinti vieno mazgo (W=1) arba nedidelio skaičiaus mazgų.
- Skaitymai: Gali būti aptarnaujami bet kuriuo prieinamu mazgu, o jei yra skirtumas, skaitymo operacija gali inicijuoti foninį suderinimą.
Pavyzdys: Apache Cassandra leidžia derinti nuoseklumo lygius skaitymams ir įrašams. Dėl didelio prieinamumo ir galutinio nuoseklumo galima sukonfigūruoti W=1 (vieno mazgo patvirtintas įrašas) ir R=1 (iš vieno mazgo skaitymas). Tada duomenų bazė vykdys skaitymo remontą fone, kad išspręstų nesuderinamumus.
8. Foninis suderinimas/Skaitymo remontas
Galutinio nuoseklumo sistemose nesuderinamumai yra neišvengiami. Foninis suderinimas arba skaitymo remontas yra šių nesuderinamumų aptikimo ir taisymo procesas.
- Skaitymo remontas: Kai atliekamas skaitymo prašymas, jei kelios kopijos grąžina skirtingas duomenų versijas, sistema gali grąžinti naujausią versiją klientui ir asinhroniškai atnaujinti pasenusias kopijas teisingais duomenimis.
- Foninis valymas: Periodiniai foniniai procesai gali tikrinti kopijas dėl nesuderinamumų ir inicijuoti remonto mechanizmus.
Pavyzdys: Amazon DynamoDB naudoja sudėtingus vidinius mechanizmus, kad nepastebėtai aptiktų ir pataisytų nesuderinamumus, užtikrindama, kad duomenys galiausiai susivienytų be tiesioginio kliento įsikišimo.
Galutinio nuoseklumo iššūkiai ir svarstymai
Nors ir galingas, galutinis nuoseklumas kelia savo iššūkius, kuriuos architektai ir kūrėjai turi atidžiai apsvarstyti:
1. Pasenę skaitymai
Tiesioginė galutinio nuoseklumo pasekmė yra galimybė skaityti pasenusius duomenis. Tai gali sukelti:
- Nenuosekli vartotojo patirtis: Vartotojai gali matyti šiek tiek pasenusią informaciją, kuri gali būti klaidinanti ar varginanti.
- Neteisingi sprendimai: Programos, naudojančios šiuos duomenis kritiniams sprendimams, gali priimti suboptimalius pasirinkimus.
Lengvinimas: Naudokite tokias strategijas kaip skaitymo remontas, klientinės pusės talpyklos su patvirtinimu arba tvirtesnius nuoseklumo modelius (pvz., priežastinis nuoseklumas) kritinėms eigoms. Aiškiai praneškite vartotojams, kai duomenys gali būti šiek tiek vėluojantys.
2. Prieštaringi įrašai
Kai keli vartotojai ar paslaugos lygiagrečiai atnaujina tą patį duomenų elementą skirtinguose mazguose, prieš šių naujinimų sinchronizavimą, kyla konfliktai. Šių konfliktų sprendimas reikalauja patikimų strategijų, tokių kaip LWW, CRDTs ar programos specifinės sujungimo logikos.
Pavyzdys: Įsivaizduokite du vartotojus, redaguojančius tą patį dokumentą neprisijungus veikiančioje programoje. Jei jie abu prideda pastraipą skirtingose dalyse, o tada vienu metu prisijungia, sistema turi turėti būdą, kaip sujungti šiuos priedus, neprarandant nė vieno.
3. Klaidos šalinimas ir stebimumas
Galutinio nuoseklumo sistemose klaidos gali būti žymiai sudėtingesnės. Naujinimo kelio sekimas, supratimas, kodėl konkretus mazgas turi pasenusius duomenis, ar konfliktų sprendimo gedimų diagnozavimas reikalauja sudėtingų įrankių ir gilaus supratimo.
Veiksminga įžvalga: Investuokite į išsamią registraciją, paskirstytą sekimą ir stebėjimo įrankius, kurie suteikia matomumą į duomenų replikacijos vėlavimą, konfliktų dažnį ir jūsų replikacijos mechanizmų būklę.
4. Įgyvendinimo sudėtingumas
Nors galutinio nuoseklumo koncepcija yra patraukli, tinkamas ir patikimas jos įgyvendinimas gali būti sudėtingas. Tinkamų modelių pasirinkimas, kraštutinių atvejų tvarkymas ir sistemos galutinio suderinimo užtikrinimas reikalauja kruopštaus projektavimo ir testavimo.
Veiksminga įžvalga: Pradėkite nuo paprastesnių galutinio nuoseklumo modelių, tokių kaip LWW, ir palaipsniui įveskite sudėtingesnius, tokius kaip CRDTs, atsižvelgdami į jūsų poreikius ir įgydami daugiau patirties. Naudokite valdomas paslaugas, kurios abstrahuoja dalį šio sudėtingumo.
5. Poveikis verslo logikai
Verslo logika turi būti projektuojama atsižvelgiant į galutinį nuoseklumą. Operacijos, kurios priklauso nuo tikslios, naujausios būsenos, gali nepavykti arba veikti netikėtai. Pavyzdžiui, el. prekybos sistema, kuri nedelsdama sumažina atsargas, kai klientas įtraukia prekę į savo pirkinių krepšelį, gali per daug parduoti, jei atsargų atnaujinimas nėra stipriai nuoseklus visose paslaugose ir kopijose.
Lengvinimas: Sukurkite verslo logiką, kad ji toleruotų laikinus nesuderinamumus. Kritinėms operacijoms apsvarstykite tokius modelius kaip Saga modelis, kad būtų galima valdyti paskirstytas transakcijas tarp mikroservisų, net jei pagrindinės duomenų saugyklos yra galutinio nuoseklumo.
Geriausios praktikos, kaip valdyti galutinį nuoseklumą visame pasaulyje
Pasaulinėms programoms galutinio nuoseklumo priėmimas dažnai yra būtinybė. Štai keletas geriausių praktikų:
1. Supraskite savo duomenis ir darbo krūvius
Atlikite išsamią savo programos duomenų prieigos modelių analizę. Nustatykite, kuriems duomenims gali būti toleruojamas galutinis nuoseklumas, o kuriems reikalingos tvirtesnės garantijos. Ne visi duomenys turi būti pasauliniu mastu stipriai nuoseklūs.
2. Pasirinkite tinkamus įrankius ir technologijas
Pasirinkite duomenų bazes ir paskirstytas sistemas, kurios sukurtos galutiniam nuoseklumui ir siūlo patikimus replikacijos, konfliktų aptikimo ir sprendimo mechanizmus. Pavyzdžiai apima:
- NoSQL duomenų bazės: Cassandra, Riak, Couchbase, DynamoDB, MongoDB (su tinkamomis konfigūracijomis).
- Paskirstytos talpyklos: Redis Cluster, Memcached.
- Pranešimų eilės: Kafka, RabbitMQ (asinhroniems naujinimams).
3. Įgyvendinkite patikimą konfliktų sprendimą
Nemanykite, kad konfliktai neatsiras. Pasirinkite konfliktų sprendimo strategiją (LWW, CRDTs, pasirinktinė logika), kuri geriausiai atitinka jūsų programos poreikius, ir ją kruopščiai įgyvendinkite. Nuodugniai ją patikrinkite didelio lygiagretumo sąlygomis.
4. Stebėkite replikacijos vėlavimą ir nuoseklumą
Įgyvendinkite išsamų stebėjimą, kad stebėtumėte replikacijos vėlavimą tarp mazgų. Supraskite, kiek laiko paprastai trunka naujinimų perdavimas, ir nustatykite perspėjimus apie per didelį vėlavimą.
Pavyzdys: Stebėkite tokius rodiklius kaip „skaitymo remonto vėlavimas“, „replikacijos vėlavimas“ ir „versijos skirtumas“ jūsų paskirstytose duomenų saugyklose.
5. Suprojektuokite saugiam nuosekliam pablogėjimui
Jūsų programa turėtų galėti veikti, nors ir su sumažintomis galimybėmis, net kai duomenys laikinai nesuderinami. Venkite kritinių gedimų dėl pasenusių skaitymų.
6. Optimizuokite tinklo vėlavimą
Pasaulinėse sistemose tinklo vėlavimas yra pagrindinis veiksnys. Suprojektuokite savo replikacijos ir duomenų prieigos strategijas, kad sumažintumėte vėlavimo poveikį. Apsvarstykite tokius metodus kaip:
- Regioniniai diegimai: Įdiekite duomenų kopijas arčiau savo vartotojų.
- Asinhroninės operacijos: Teikite pirmenybę asinhroniniam bendravimui ir foniniam apdorojimui.
7. Švieskite savo komandą
Užtikrinkite, kad jūsų kūrimo ir operacijų komandos gerai suprastų galutinį nuoseklumą, jo pasekmes ir naudojamus modelius, kaip jį valdyti. Tai yra būtina kuriant ir palaikant patikimas sistemas.
Išvada
Galutinis nuoseklumas nėra kompromisas; tai fundamentali dizaino pasirinktis, leidžianti kurti labai prieinamas, plečiamas ir našias paskirstytas sistemas, ypač pasauliniame kontekste. Suprasdami kompromisus, priimdami tinkamus modelius, tokius kaip gossip protokolai, vektoriniai laikrodžiai, LWW ir CRDTs, ir kruopščiai stebėdami nesuderinamumus, kūrėjai gali išnaudoti galutinio nuoseklumo galią, kurdami atsparias programas, kurios efektyviai aptarnauja vartotojus visame pasaulyje.
Kelionė į galutinio nuoseklumo meistriškumą yra nuolatinė, reikalaujanti nuolatinio mokymosi ir prisitaikymo. Keičiantis sistemoms ir vartotojų lūkesčiams, taip pat keisis strategijos ir modeliai, naudojami duomenų vientisumui ir prieinamumui užtikrinti mūsų vis labiau tarpusavyje susijusiame skaitmeniniame pasaulyje.